package com.sromku.bugsnag.dialog; import org.eclipse.jface.dialogs.IDialogConstants; import org.eclipse.jface.dialogs.TitleAreaDialog; import org.eclipse.swt.SWT; import org.eclipse.swt.layout.GridData; import org.eclipse.swt.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Control; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Text; import com.sromku.bugsnag.api.Api; import com.sromku.bugsnag.model.Account; /** * Edit account dialog * * @author sromku */ public class EditAccountDialog extends TitleAreaDialog { private Text name; private Text authToken; private Account account; public EditAccountDialog(Shell parentShell) { super(parentShell); } public Account getAccount() { return account; } @Override protected Control createDialogArea(Composite parent) { return init(parent); } private Control init(Composite parent) { setTitle("Account details"); setMessage("Set the details of your bugsnag account."); Composite area = (Composite) super.createDialogArea(parent); Composite container = new Composite(area, SWT.NONE); container.setLayoutData(new GridData(GridData.FILL_BOTH)); GridLayout gridLayout = new GridLayout(2, false); gridLayout.marginLeft = 5; gridLayout.marginTop = 5; gridLayout.marginRight = 5; container.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); container.setLayout(gridLayout); // Set Label name = setField("Account name", "Choose any convenient account name", container); // Set project id authToken = setField("Auth token", "", container); // set data if (account != null) { name.setText(account.name == null ? "" : account.name); authToken.setText(account.authToken == null ? "" : account.authToken); } return area; } private Text setField(String labelName, String hint, Composite container) { Label label = new Label(container, SWT.NONE); label.setText(labelName + ":"); GridData gridData = new GridData(GridData.VERTICAL_ALIGN_BEGINNING); label.setLayoutData(gridData); Text text = new Text(container, SWT.BORDER); gridData = new GridData(GridData.FILL_HORIZONTAL); text.setLayoutData(gridData); text.setMessage(hint); return text; } public void setAccount(Account account) { this.account = account; } @Override protected void buttonPressed(int buttonId) { switch (buttonId) { case IDialogConstants.CANCEL_ID: break; case IDialogConstants.OK_ID: String authToken = this.authToken.getText(); // do the connection testing: account = Api.getInstance().getAccount(authToken); if (account == null) { return; } account.authToken = this.authToken.getText(); break; default: break; } super.buttonPressed(buttonId); } }